package com.prothink.threadproject.zuoye;

import java.util.Random;

public class ShuffleString {
    public static void main(String[] args) {
        String originalString = "Hello World"; // 原始字符串
        String shuffledString = shuffle(originalString); // 打乱后的字符串
        System.out.println("打乱后的字符串: " + shuffledString); // 输出打乱后的字符串
    }

    public static String shuffle(String str) {
        char[] charArray = str.toCharArray(); // 将字符串转换为字符数组
        Random random = new Random(); // 创建随机数生成器

        // 使用 Fisher-Yates 洗牌算法打乱字符数组
        for (int i = charArray.length - 1; i > 0; i--) {
            // 随机生成一个索引
            int j = getRandomIndex(i); // 自定义获取随机索引的方法

            // 交换字符
            char temp = charArray[i];
            charArray[i] = charArray[j];
            charArray[j] = temp;
        }

        return new String(charArray); // 将字符数组转换回字符串并返回
    }

    // 自定义获取随机索引的方法
    public static int getRandomIndex(int upperBound) {
        // 用系统时间作为随机数种子
        long currentTime = System.nanoTime();
        return (int) (currentTime % (upperBound + 1)); // 确保随机索引在合法范围内
    }
}
